home *** CD-ROM | disk | FTP | other *** search
- PROGRAM NetInfo;
- USES Crt, Dos;
- CONST
- Redirector = $08;
- Receiver = $80;
- Messenger = $04;
- Server = $40;
- AnyType = $CC;
-
- TYPE
- String15 = STRING[15];
- LocalDevice = ARRAY[1..16] OF Char;
- RedirDevice = ARRAY[1..128] OF Char;
- DevicePtr = ^DevInfo;
- DevInfo = RECORD
- LD : LocalDevice;
- RD : RedirDevice;
- ND : DevicePtr
- END;
-
- VAR Done:Boolean;
- Name:String15;
- Ver:Word;
- I,Key:Integer;
- DevIn:STRING[16];
- RedIn:STRING[128];
- LDevice:LocalDevice;
- RDevice:RedirDevice;
- DeviceList,NextDevice : DevicePtr;
-
- PROCEDURE ClrCursor;
- VAR Regs : Registers;
- BEGIN
- Regs.CH:=$20;
- Regs.AH:=$01;
- INTR($10,Regs);
- END;
-
- PROCEDURE SetCursor;
- VAR Regs : Registers;
- BEGIN
- Regs.AH:=1;
- IF LastMode <> Mono THEN
- BEGIN
- Regs.CH:=6;
- Regs.CL:=7
- END
- ELSE
- BEGIN
- Regs.CH:=12;
- Regs.CL:=13
- END;
- INTR($10,Regs);
- END;
-
- FUNCTION GetExtended : Integer;
- VAR CH:Char;
- BEGIN
- CH:=#0;GetExtended:=0;CH:=ReadKey;
- IF Ord(CH)=0 THEN
- BEGIN
- CH:=ReadKey;
- GetExtended:=Ord(CH)
- END
- END;
-
- FUNCTION GetFileName(S:STRING):STRING;
- VAR FileName:STRING[11];
- I:Integer;
- BEGIN
- FileName:='';
- I:=1;
- WHILE S[I]<>#0 DO
- BEGIN
- FileName[I]:=(S[I]);
- I:=I+1
- END;
- FileName[0]:=Chr(i-1);
- GetFileName:=FileName
- END;
-
- FUNCTION ChkNetInterface : Boolean;
- VAR NetRegs:Registers;
- BEGIN
- NetRegs.AH:=$00;
- INTR($2A,NetRegs);
- IF NetRegs.AH = 0 THEN ChkNetInterface:=FALSE
- END;
-
- PROCEDURE ChkPCLan;
- VAR NetRegs:Registers;
- ChkType:Integer;
- BEGIN
- NetRegs.AX:=$B800;
- INTR($2F,NetRegs);
- IF NetRegs.AH = 0 THEN
- WriteLn('Network Not Installed')
- ELSE
- BEGIN
- ChkType:= NetRegs.BL AND AnyType;
- IF (ChkType AND Server > 0) THEN
- WriteLn('Server')
- ELSE
- IF (ChkType AND Messenger > 0) THEN
- WriteLn('Messenger')
- ELSE
- IF (ChkType AND Receiver > 0) THEN
- WriteLn('Receiver')
- ELSE
- IF (ChkType AND Redirector > 0) THEN
- WriteLn('Redirector')
- ELSE
- WriteLn('Unknown Type')
- END
- END;
-
- FUNCTION NetName : String15;
- VAR NetRegs:Registers;
- Name:ARRAY[1..15] OF Char;
-
- BEGIN
- WITH NetRegs DO
- BEGIN
- AH:=$5E;
- AL:=$00;
- DS:=Seg(Name);
- DX:=Ofs(Name)
- END;
- MsDos(NetRegs);
- IF NetRegs.CH<>0 THEN
- NetName:=Name
- ELSE
- NetName:='NOT DEFINED'
- END;
-
- FUNCTION ChkDrive(DriveNo:Integer):Integer;
- VAR DriveRegs: Registers;
- BEGIN
- WITH DriveRegs DO
- BEGIN
- AH:=$44;
- AL:=$09;
- BL:=DriveNo;
- MsDos(DriveRegs);
- IF (FLAGS AND 1) = 0 THEN
- IF (DX AND $1000) = $1000 THEN
- ChkDrive := 1
- ELSE
- ChkDrive := 0
- ELSE
- ChkDrive := AX * -1
- END
- END;
-
- FUNCTION GetDevices: DevicePtr;
- VAR NetRegs: Registers;
- FstDevice, CurDevice,NewDevice : DevicePtr;
- DevName: LocalDevice;
- RedName: RedirDevice;
- NextDev: Integer;
- More : Boolean;
-
- BEGIN
- More:=TRUE;
- FstDevice:=NIL;
- CurDevice:=NIL;
- NextDev:=0;
- WHILE More DO
- BEGIN
- WITH NetRegs DO
- BEGIN
- AH:=$5F;
- AL:=$02;
- BX:=NextDev;
- DS:=Seg(DevName);
- SI:=Ofs(DevName);
- ES:=Seg(RedName);
- DI:=Ofs(RedName)
- END;
- MsDos(NetRegs);
- IF (NetRegs.FLAGS AND 1) = 1 THEN
- More:=FALSE
- ELSE
- BEGIN
- NEW(NewDevice);
- NewDevice^.LD:=DevName;
- NewDevice^.RD:=RedName;
- NewDevice^.ND:=NIL;
- IF (CurDevice = NIL) AND (FstDevice=NIL) THEN
- BEGIN
- CurDevice:=NewDevice;
- FstDevice:=NewDevice
- END
- ELSE
- BEGIN
- CurDevice^.ND:=NewDevice;
- CurDevice:=NewDevice
- END;
- Inc(NextDev)
- END
- END;
- GetDevices:=FstDevice
- END;
-
- PROCEDURE AssignDevice(DevName:LocalDevice;
- RedName:RedirDevice);
- VAR NetRegs: Registers;
- DevType: Byte;
- Dummy : Integer;
-
- BEGIN
- IF Pos(':',DevName)=2 THEN
- DevType:=4
- ELSE
- DevType:=3;
-
- WITH NetRegs DO
- BEGIN
- AH:=$5F;
- AL:=$03;
- BL:=DevType;
- CX:=0;
- DS:=Seg(DevName);
- SI:=Ofs(DevName);
- ES:=Seg(RedName);
- DI:=Ofs(RedName)
- END;
- MsDos(NetRegs);
- IF (NetRegs.FLAGS AND 1) = 1 THEN
- BEGIN
- TextColor(Red);GotoXY(WhereX+6,WhereY);
- WriteLn('An Error Occurred on Assign');
- TextColor(Red+128);GotoXY(WhereX+13,WhereY);
- Write('Press Any Key');
- Dummy:=GetExtended;
- TextColor(White);
- ClrScr
- END
- END;
-
- PROCEDURE DeleteDevice(DevName:LocalDevice);
- VAR NetRegs: Registers;
- Dummy : Integer;
-
- BEGIN
- WITH NetRegs DO
- BEGIN
- AH:=$5F;
- AL:=$04;
- DS:=Seg(DevName);
- SI:=Ofs(DevName)
- END;
- MsDos(NetRegs);
- IF (NetRegs.FLAGS AND 1) = 1 THEN
- BEGIN
- TextColor(Red);GotoXY(WhereX+6,WhereY);
- WriteLn('An Error Occurred on Delete');
- TextColor(Red+128);GotoXY(WhereX+13,WhereY);
- Write('Press Any Key');
- Dummy:=GetExtended;
- TextColor(White);
- ClrScr
- END
- END;
-
- FUNCTION SrchDevice(Drive:LocalDevice):DevicePtr;
- VAR NDevice:DevicePtr;
- BEGIN
- NDevice:=GetDevices;
- WHILE (NDevice <> NIL) AND
- (Copy(NDevice^.LD,1,3) <>
- Copy(Drive,1,3)) DO
- BEGIN
- NDevice:=NDevice^.ND
- END;
- SrchDevice:=NDevice
- END;
-
- PROCEDURE DisplayDrives;
- VAR I:Integer;
- LDevice:LocalDevice;
- NextDevice : DevicePtr;
- BEGIN
- FOR I:=1 TO 26 DO
- BEGIN
- CASE ChkDrive(I) OF
- 0 : BEGIN
- Write(#32,#32,Chr(64+I),':');
- GotoXY(WhereX+3,WhereY);
- WriteLn('Local')
- END;
- 1 : BEGIN
- Write(#32,#32,Chr(64+I),':');
- GotoXY(WhereX+3,WhereY);
- Write('Remote');
- LDevice[1]:=Chr(64+I);
- LDevice[2]:=':';
- LDevice[3]:=#0;
- NextDevice:=SrchDevice(LDevice);
- GotoXY(WhereX+7,WhereY);
- WITH NextDevice^ DO
- WriteLn(Copy(RD,1,Pos(#0,RD)))
- END
- END
- END
- END;
-
- PROCEDURE ScrnSetup;
- BEGIN
- ClrCursor;
- TextBackground(Blue);
- TextColor(White);
- ClrScr;
- GotoXY(30,2);Write('Network Status');
- TextColor(LightGray);
- GotoXY(2,5);Write('Dos Version:');
- GotoXY(21,5);Write('Network Name:');
- GotoXY(51,5);Write('Node Type:');
- TextColor(White);
- GotoXY(31,7);Write('Drive Status');
- TextColor(LightGray);
- GotoXY(20,9);Write('Drive');
- GotoXY(27,9);Write('Location');
- GotoXY(40,9);Write('Connection');
- GotoXY(15,25);Write('F1 - Assign Device');
- GotoXY(35,25);Write('F2 - Delete Device');
- GotoXY(55,25);Write('F10 - Exit');
- TextBackground(Black);
- Ver:=DosVersion;
- GotoXY(15,5);
- WriteLn(Lo(Ver),'.',Hi(Ver))
- END;
-
- PROCEDURE SetScreen(W,X,Y,Z,Back,Txt:Integer);
- BEGIN
- Window(W,X,Y,Z);
- TextColor(Txt);
- TextBackground(Back);
- ClrScr
- END;
-
- BEGIN
- ScrnSetup;
- IF ChkNetInterface THEN
- BEGIN
- GotoXY(35,5); WriteLn(NetName);GotoXY(62,5);
- ChkPCLan;
- Window(20,10,60,20);ClrScr;
- DisplayDrives;
- REPEAT
- SetScreen(20,21,60,24,Blue,White);
- Key:=GetExtended;
- CASE Key OF
- 59:BEGIN
- SetCursor;
- Write('Drive to Redirect ');
- ReadLn(DevIn);
- Write('Remote Definition ');
- ReadLn(RedIn);
- ClrCursor;
- FOR I:= 1 TO Ord(DevIn[0]) DO
- LDevice[I]:=DevIn[I];
- LDevice[Ord(DevIn[0])+1]:=#0;
- FOR I:= 1 TO Ord(RedIn[0]) DO
- RDevice[I]:=RedIn[I];
- RDevice[Ord(RedIn[0])+1]:=#0;
- AssignDevice(LDevice,RDevice)
- END;
- 60:BEGIN
- Write('Drive to Delete ');
- SetCursor;
- ReadLn(DevIn);
- ClrCursor;
- FOR I:= 1 TO Ord(DevIn[0]) DO
- LDevice[I]:=DevIn[I];
- LDevice[Ord(DevIn[0])+1]:=#0;
- DeleteDevice(LDevice)
- END
- END;
- SetScreen(20,10,60,20,Black,LightGray);
- DisplayDrives;
- UNTIL Key = 68;
-
- END
- ELSE
- WriteLn('NetBIOS Interface Not Available')
- END.
-